package com.lvluo.jd.api.function;

import java.util.List;

import com.lvluo.jd.api.bigdata.IJdFundamentalData;
import com.lvluo.jd.api.stock.IMetrics;

public interface IFundamentalData {

	/**
	 * 指定财务指标查询方法
	 * 此方法为指定财务指标查询。其参数为要查询的一系列财务指标，传入的指标参数前须加入"Fundamentals."，例如Fundamentals
	 * .pb_ratio、Fundamentals.pe_ratio等。
	 * 
	 * @param queries
	 * @return
	 */
	IFundamentalData query(IQuery... queries);

	/**
	 * 查询条件过滤方法 查询条件过滤方法。可以传入单个财务指标限定条件，也可以传入多个限定条件并以逗号隔开或者通过and函数操作将限定条件连接起来。
	 * 
	 * @param tuple
	 * @return
	 */
	IFundamentalData where(OpTuple<?> tuple);

	/**
	 * 数据排序方法 数据排序方法。根据传入的财务指标进行排序。在财务指标后接asc方法做升序，或用desc方法做降序排序。
	 * 
	 * @param tuple
	 * @return
	 */
	IFundamentalData orderBy(OpTuple<?> tuple);

	/**
	 * 用来提取查询到的从offset开始的limit条数据
	 * 此方法如果参数offset为非负数，则用来查询从offset开始的limit条的数据；如果参数offset为正数，则用来查询结果除去后limit条的数据
	 * @param offset
	 * @return
	 */
	IFundamentalData offset(int offset);

	/**
	 * 限定最大的返回数量
	 * 
	 * @param limit
	 * @return
	 */
	IFundamentalData limit(int limit);

	/**
	 * 结果返回方法
	 * 
	 * @return
	 */
	List<IMetrics> commit();

	/**
	 * 返回京东大数据查询对象
	 * 
	 * @return
	 */
	IJdFundamentalData jdDataSearch();

}
